function fn10() {
  /* 将同步函数Promise化 */
  // add函数进来
  function promisify(fn) {
    // padd函数出去
    // ...args = [12,34]
    return function (...args) {

      /* 确保返回一个Promise以便链式作业 */
      return new Promise((resolve, reject) => {
        try {
          // 调用原函数+传入入参
          // 成功时resovle结果
          const result = fn.apply(null, args);
          resolve(result);
        } catch (err) {
          // 失败时reject错误
          reject(err);
        }
      });
      
    };
  }

  const add = (a, b) => {
    if (Math.random() > 0.9) {
      throw new Error("程序运行出错了");
    }
    return a + b;
  };
  const multiply = (a, b) => {
    if (Math.random() > 0.9) {
      throw new Error("程序运行出错了");
    }
    return a * b;
  };

  const padd = promisify(add);
  const pmul = promisify(multiply);

  /* 清晰地流水化执行业务逻辑 */
  padd(12, 34)
    .then((data) => console.log("data=", data))
    .then((data) => pmul(12, 34))
    .then((data) => console.log("data=", data))
    .catch((err) => console.error("err=", err))
    .finally(() => console.log("game over"));

  console.log("同步代码执行完毕");
}
fn10();
